DBinary,画画的,专画可爱的东西
查看知乎原文
字符编码,我愿称之为计算机历屎上的屎山王中王。
其支撑起了无数次谁都不服谁的争论。
几乎把所有主流操作系统都坑的不要不要的,并且至今仍然遗留着一大堆乱七八糟的问题。
并且最重要的是至今没有一个较为完美的解决方案。
我们先回到几十年前的某一天,作为一个根正苗红的阿美莉卡计算机攻城狮,你认为存储一个"字母",用几个 bit 合适?
已知我们有 26 个英文字母,我们算大小写翻个倍儿,加上数字标点,怎么的 128 种编码情况也够了吧,加上 1 个位作为拓展,一字节=8 位,简直特么的完美.
可以说 ASCII 字符集终结了 1byte=6 位,7 位,8 位,9 位这群魔乱舞的时代,但你别急,我们的故事才刚刚开始.
随着计算机的流行和发展,肯定不只有阿美莉卡在用啊,就说我们中文,>收录的数量就有 5 万个,哪怕我们凑活凑活,只用常用汉字,那也有 3000 个左右,8bit 能表示的范围就 256 个,这显然不够啊
你会说,不要慌,8bit 不还给你留了一个扩展位么,我们可以这样,第一个字节如果高位是 1,那么后面那个就是扩展位,所以在 1980 年中国国家总局颁布了第一个中文编码 GB2312-80,不过这个编码的覆盖范围不够,所以后面又颁布了 GBK 编码,
简单来说如果第一个字节的范围是 0x81–0xFE,那么它就是一个汉字,你需要和第二个字节(范围 0x40–0xFE)去凑够整个汉字的编码.
很完美是不是?这是一个神奇的编码,具体怎么神奇我们稍候再说。
中文问题解决了,但是又有一个大问题,比如 90 年的后即十几二十年年,windows 是毫无疑问的操作系统一哥,没有之一,但显然 windows 不能只给我们中国用,它得挑一个别的编码,大到能够覆盖大部分国家的绝大多数语言。
这问题就大了,选啥…